package com.gitee.magic.framework.base.constant;

import com.gitee.magic.core.exception.ApplicationException;
import com.gitee.magic.core.utils.StringUtils;
import com.gitee.magic.framework.base.spring.PropertyConfigurer;

/**
 * 配置常量
 * @author Start
 */
public class Config {
	
	/**
	 * 全名称 例:name_dev_1.1.0
	 */
	public static String getFullName() {
		return getSystemName()+"_"+getActive()+"_"+getSystemVersion();
	}
	
	/**
	 * 系统名称
	 */
	public static String getSystemName() {
		//
		String name=PropertyConfigurer.getString("spring.application.name");
		if(StringUtils.isEmpty(name)) {
			throw new ApplicationException("未获取到 spring.application.name 配置信息");
		}
		return name;
	}
	
	/**
	 * 系统版本
	 */
	public static String getSystemVersion() {
		//
		String name=PropertyConfigurer.getString("magic.system.version");
		if(StringUtils.isEmpty(name)) {
			throw new ApplicationException("未获取到 magic.system.version 配置信息");
		}
		return name;
	}
	
	/**
	 * 当前环境
	 * 	dev:开发环境
	 * 	test:测试环境
	 * 	pro:正式环境
	 */
	public static String getActive() {
		String active=PropertyConfigurer.getString("spring.profiles.active");
		if(StringUtils.isEmpty(active)) {
			throw new ApplicationException("未获取到 spring.profiles.active 配置信息");
		}
		return active;
	}
	
	/**
	 * 开发环境
	 * @return
	 */
	public static Boolean isDevActive() {
		return "dev".equals(getActive());
	}
	
	/**
	 * 测试环境 test开头均为测试环境
	 * @return
	 */
	public static Boolean isTestActive() {
//		return "test".equals(getActive());
		return getActive().startsWith("test");
	}
	
	/**
	 * spring.profiles.active:pro(正式环境)
	 * 只要不为dev、test均为正式环境
	 */
	public static Boolean isSystemFlag() {
		return !(isDevActive()||isTestActive());
//		return "pro".equals(getActive());
	}
	
	/**
	 * 索引用于识别所属的服务器(0~31)
	 */

	public static Integer getBalancedWorkerId() {
		return PropertyConfigurer.getInt("magic.system.balanced_worker_id",0);
	}
	
	/**
	 * 索引用于识别所在的数据中心(0~31)
	 */

	public static Integer getBalancedDataCenterId() {
		return PropertyConfigurer.getInt("magic.system.balanced_datacenter_id",0);
	}
	
	/**
	 * 编码格式 
	 */
	public static String getEncoding() {
		return PropertyConfigurer.getString("magic.system.encoding","UTF-8");
	}
	
	/**
	 * 请求主体内容大小，默认1M
	 */

	public static Long getMaxBodyTextSize() {
		return PropertyConfigurer.getLong("magic.http.max_body_text_size",1048576L);
	}
	
	/**
	 * 文件数据上传大小，默认100M
	 */
	public static Long getMaxBodyUploadFileSize() {
		return PropertyConfigurer.getLong("magic.http.max_body_uploadfile_size",104857600L);
	}
	
}